From: Jasper St. Pierre Date: Mon, 18 Feb 2013 10:26:25 +0000 (-0500) Subject: Defer initializing UI until after the global session has loaded X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~4531 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=0bef925b5146794220a552f3422b0c0616466425;p=gnome-shell.git Defer initializing UI until after the global session has loaded https://bugzilla.gnome.org/show_bug.cgi?id=694321 --- diff --git a/js/ui/main.js b/js/ui/main.js index 015b4b620..936d74ee4 100644 --- a/js/ui/main.js +++ b/js/ui/main.js @@ -98,19 +98,21 @@ function start() { Gio.DesktopAppInfo.set_desktop_env('GNOME'); - sessionMode = new SessionMode.SessionMode(); + shellDBusService = new ShellDBus.GnomeShell(); + shellMountOpDBusService = new ShellMountOperation.GnomeShellMountOpHandler(); - // start session after we know what mode we're running in - let signalId = sessionMode.connect('updated', function() { - sessionMode.disconnect(signalId); - startSession(); - }); + sessionMode = new SessionMode.SessionMode(); + sessionMode.connect('sessions-loaded', _sessionsLoaded); + sessionMode.init(); } -function startSession() { - shellDBusService = new ShellDBus.GnomeShell(); - shellMountOpDBusService = new ShellMountOperation.GnomeShellMountOpHandler(); +function _sessionsLoaded() { + sessionMode.connect('updated', _sessionUpdated); + _initializeUI(); + _sessionUpdated(); +} +function _initializeUI() { // Ensure ShellWindowTracker and ShellAppUsage are initialized; this will // also initialize ShellAppSystem first. ShellAppSystem // needs to load all the .desktop files, and ShellWindowTracker diff --git a/js/ui/sessionMode.js b/js/ui/sessionMode.js index e926ba2e7..7d6b2e4f6 100644 --- a/js/ui/sessionMode.js +++ b/js/ui/sessionMode.js @@ -158,12 +158,7 @@ function listModes() { const SessionMode = new Lang.Class({ Name: 'SessionMode', - _init: function() { - global.connect('notify::session-mode', Lang.bind(this, this._sync)); - this._modes = _modes; - this._modeStack = [DEFAULT_MODE]; - this._sync(); - + init: function() { _getModes(Lang.bind(this, function(modes) { this._modes = modes; let primary = modes[global.session_mode] && @@ -171,6 +166,8 @@ const SessionMode = new Lang.Class({ let mode = primary ? global.session_mode : 'user'; this._modeStack = [mode]; this._sync(); + + this.emit('sessions-loaded'); })); },